//para la interfaz
//	./principal 

//para ejecutar por consola
//	./principal IPCLIENTE IPSERVIDOR ARCHIVO

#include <iostream>
#include <stdlib.h>
#include <cstring>
#include <DatosEntrada.h>
#include "analizador.h"

#define IPSERVIDOR datEnt->getIpServidor()
#define IPCLIENTE datEnt->getIpCliente()
#define ARCHIVO datEnt->getArchivo()
#define PUERTO datEnt->getPuerto()
#define INTERFACE datEnt->getInterface()

using namespace std;

int main(int argn, char *argc[]){

	int k;
	DatosEntrada *datEnt=DatosEntrada::InstanceDatosEntrada();

	cout<<argc[1]<<endl;
	if (argn>1){
		k=strcmp(argc[1],"-gui");
		if(!k){
			k = system("./qtinterfaz/portedcanvas");
			return 0;
		}

	}else{
		k=system("./interpreteComando/interprete");
		datEnt->refrescar("datosEntrada.dat");
		k=system("rm -f datosEntrada.dat");
		cout<<"Iniciando descarga"<<endl;

	}



	string direccion;

	//(1) ejecutar RPC cliente (.cpp), activar servidor
    direccion="./rpc-cliente/capturatraza_cliente "+IPSERVIDOR+" "+IPCLIENTE+" "+IPSERVIDOR+" "+PUERTO+" 1";
    k = system(direccion.c_str());

	//(2) capturar traza cliente, descargar ARCHIVO, y finalizar captura cliente
	direccion="sudo ./rpc-cliente/script-capturatrazaCliente.sh "+INTERFACE+" "+IPSERVIDOR+" "+PUERTO+" "+ARCHIVO+"";
    cerr<<direccion<<endl;
    k = system(direccion.c_str());

	//(3) ejecutar RPC, para finalizar servidor
    direccion="./rpc-cliente/capturatraza_cliente "+IPSERVIDOR+" "+IPCLIENTE+" "+IPSERVIDOR+" "+PUERTO+" 2";
    k = system(direccion.c_str());

	//(4) aplicar filtros en cliente
    direccion="./rpc-cliente/script-filtrosCliente.sh "+IPCLIENTE+" "+IPSERVIDOR+" "+PUERTO+"";
    k = system(direccion.c_str());

	//esperar desactivacion y filtrado de trazas
    k = system("sleep 3");

	//(5) descargar trazas
    direccion="wget http://"+IPSERVIDOR+":"+PUERTO+"/rpc-servidor/tr-srv/acks1.txt";
    k = system(direccion.c_str());
    direccion="wget http://"+IPSERVIDOR+":"+PUERTO+"/rpc-servidor/tr-srv/acks-dup1.txt";
    k = system(direccion.c_str());
    direccion="wget http://"+IPSERVIDOR+":"+PUERTO+"/rpc-servidor/tr-srv/servidor-ACKs.txt";
    k = system(direccion.c_str());
    direccion="wget http://"+IPSERVIDOR+":"+PUERTO+"/rpc-servidor/tr-srv/servidor-DATApkts.txt";
    k = system(direccion.c_str());

	k = system("cp acks1.txt acks-dup1.txt servidor-ACKs.txt servidor-DATApkts.txt datos");
	k = system("rm acks1.txt acks-dup1.txt servidor-ACKs.txt servidor-DATApkts.txt");

	//compilar fuentes
	//k = system("g++ analizar.cpp -o analizar analizarACK/compara-ACKs.h analizarDATA/compara-DATApkts.h analizarRTT/calcula-RTT.h ");

	//generar calculos
	//k = system("./analizar");// > datos/log");
	analizador();

	cout<<"Ya puede ver los resultados en: datos/resultados.html"<<endl;

	k = system("google-chrome datos/resultados.html &");// > datos/log");
	//k = system("firefox datos/resultados.html &");// > datos/log");

	return 0;
}
